const AdminsDao = require("../Dao/adminDaos");
const md5 = require("md5");
const jwt = require("jsonwebtoken");
const { ValidationError } = require("../utils/errors");
const { FormatJson } = require("../utils/tool");
// 登录
exports.login = async function (info) {
    info.loginPwd = md5(info.loginPwd);
    const result = await AdminsDao.loginDao(info);
    // 登录成功 添加token过去
    if (result) {
        // 将密码过滤掉
        const data = {
            id: result.id,
            loginId: result.loginId,
            name: result.name,
        }
        // 是否勾选勾选token有效期限七天 没有一天
        let rememberDay = null;
        if (result.remember) {
            rememberDay = result.remember;
        } else {
            rememberDay = 1;
        }
        // 生成token
        const token = jwt.sign(data, md5(process.env.JWT_decretKey), { expiresIn: 60 * 60 * 24 * rememberDay, algorithm: "HS256" })
        return {
            token: token,
            data
        }
    }
    return {
        data: "账号密码不正确"
    }

}
/**
 * {
  "name": "管理员2",
  "loginId": "admin2",
  "loginPwd": "123456",
  "oldLoginPwd": "123123"
}
*/
// 更新登录信息
exports.updateLogin = async function (info) {
    // 判断旧密码与管理员是否存在
    const result = await AdminsDao.loginDao({
        loginId: info.loginId,
        loginPwd: md5(info.oldLoginPwd)
    })
    // 存在
    if (result) {
        // 判断旧密码与新密码是否一致
        if (info.loginPwd == info.oldLoginPwd) {
            throw new ValidationError("旧密码与新密码不能一致!");
        }
        //修改的函数调用
        const datas = {
            loginId: info.loginId,
            loginPwd: md5(info.loginPwd),
            name: info.name,
            oldLoginPwd: md5(info.oldLoginPwd)
        }
        // 返回的内容
        const updataInfo = await AdminsDao.updateAdmin(datas);
        const returnObj = {
            id: result.id,
            loginId: datas.loginId,
            name: datas.name
        }
        //如果修改的内容一致则,添加一个msg进行提醒
        return updataInfo[0] > 0 ? FormatJson(0, "", returnObj) : FormatJson(0, "修改失败，修改内容与原先内容保持一致!", returnObj)
    } else {
        throw new ValidationError("旧密码错误");
    }

}